/**
 * 
 */
package com.swim.natatoriuminfo.entity;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Length;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;

import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import com.swim.natatoriuminfotouser.entity.NatatoriumInfoToUser;

/**
 * 游泳馆信息Entity
 * @author tql
 * @version 2021-03-14
 */
@Table(name="t_natatorium_info", alias="a", columns={
		@Column(name="id", attrName="id", label="唯一标识", isPK=true),
		@Column(name="business_status", attrName="businessStatus", label="营业状态 1表示营业中 2表示暂停营业"),
		@Column(name="collaborate_status", attrName="collaborateStatus", label="合作状态 1表示未合作  2表示已合作"),
		@Column(name="placing_function_status", attrName="placingFunctionStatus", label="下单功能状态 1表示开启  2表示关闭"),
		@Column(name="show_navigation_status", attrName="showNavigationStatus", label="导航功能状态 1表示开启  2表示关闭"),
		@Column(name="show_map_status", attrName="showMapStatus", label="地图功能状态 1表示开启  2表示关闭"),
		@Column(name="show_booking_status", attrName="showBookingStatus", label="在线预约功能状态 1表示开启  2表示关闭"),
		@Column(name="conception_status", attrName="conceptionStatus", label="教练风采展示状态 1表示开启  2表示关闭"),
		@Column(name="work_shop_status", attrName="workShopStatus", label="体验课展示状态 1表示开启  2表示关闭"),
		@Column(name="name", attrName="name", label="场馆名称", queryType=QueryType.LIKE),
		@Column(name="ranking", attrName="ranking", label="排名", queryType=QueryType.EQ),
		@Column(name="apply_time", attrName="applyTime", label="申请时间"),
		@Column(name="address", attrName="address", label="场馆地址"),
		@Column(name="navigation_address", attrName="navigationAddress", label="场馆导航地址"),
		@Column(name="city", attrName="city", label="城市", queryType=QueryType.EQ),
		@Column(name="area", attrName="area", label="区县", queryType=QueryType.EQ),		
		@Column(name="principal", attrName="principal", label="负责人"),
		@Column(name="venue_description", attrName="venueDescription", label="场馆描述"),
		@Column(name="phone", attrName="phone", label="联系电话"),
		@Column(name="business_hours", attrName="businessHours", label="营业时间"),
		@Column(name="settlement_bank", attrName="settlementBank", label="结算银行"),
		@Column(name="open_account_person", attrName="openAccountPerson", label="开户人"),
		@Column(name="open_account_phone", attrName="openAccountPhone", label="开户电话"),
		@Column(name="open_account_number", attrName="openAccountNumber", label="开户帐号"),
		@Column(name="settlement_first", attrName="settlementFirst", label="首次结算比例"),
		@Column(name="settlement_last", attrName="settlementLast", label="最后结算比例"),
		@Column(name="increase_daily_visits", attrName="increaseDailyVisits", label="每日增加访问量（格式 10-15）"),
		@Column(name="start_level_score", attrName="startLevelScore", label="星级评分"),
		@Column(name="water_score", attrName="waterScore", label="水质评分"),
		@Column(name="context_score", attrName="contextScore", label="环境评分"),
		@Column(name="serve_score", attrName="serveScore", label="服务评分"),
		@Column(name="average_consume", attrName="averageConsume", label="平均消费"),
		@Column(name="experience_class_price", attrName="experienceClassPrice", label="体验课价格"),
		@Column(name="business_field", attrName="businessField", label="经营领域"),
		@Column(name="employees_num", attrName="employeesNum", label="员工人数"),
		@Column(name="company_profile", attrName="companyProfile", label="公司简介"),
		@Column(name="company_location", attrName="companyLocation", label="公司地点"),
		@Column(name="recruitment_mobile", attrName="recruitmentMobile", label="招聘联系电话"),
		@Column(includeEntity=DataEntity.class),
	},  joinTable={
			@JoinTable(type=Type.LEFT_JOIN, entity=NatatoriumInfoToUser.class, alias="ntu", on="a.id = ntu.natatorium_info_id", attrName="natatoriumInfoToUser", 
					columns={
							@Column(name="user_code", attrName="userCode", label="用户user_code"),
					}),
	},orderBy="a.ranking ASC"
)
public class NatatoriumInfo extends DataEntity<NatatoriumInfo> {
	
	private static final long serialVersionUID = 1L;
	private Long businessStatus;		// 营业状态 1表示营业中 2表示暑期开 3表示维护中
	private Long collaborateStatus;		// 合作状态 1表示未合作  2表示已合作
	private Long placingFunctionStatus;		// 下单功能状态 1表示开启  2表示关闭
	private Long showNavigationStatus;		// 导航功能状态 1表示开启  2表示关闭
	private Long showMapStatus;		// 地图功能状态 1表示开启  2表示关闭
	private Long showBookingStatus;		// 在线预约功能状态 1表示开启  2表示关闭
	private Long conceptionStatus;		// 教练风采展示状态 1表示开启  2表示关闭
	private Long workShopStatus;		// 体验课展示状态 1表示开启  2表示关闭
	private String name;		// 场馆名称
	private Long ranking;		// 排名
	private Date applyTime;		// 申请时间
	private String address;		// 场馆地址
	private String navigationAddress;		// 场馆导航地址
	private String city;		// 城市
	private String area;		// 区县	
	private String principal;		// 负责人
	private String venueDescription;		// 场馆描述
	private String phone;		// 联系电话
	private String businessHours;		// 营业时间
	private String settlementBank;		// 结算银行
	private String openAccountPerson;		// 开户人
	private String openAccountPhone;		// 开户电话
	private String openAccountNumber;		// 开户帐号
	private Long settlementFirst;		// 首次结算比例
	private Long settlementLast;		// 最后结算比例
	private String increaseDailyVisits;		// 每日增加访问量（格式 10-15）
	private Double startLevelScore;		// 星级评分
	private Double waterScore;		// 水质评分
	private Double contextScore;		// 环境评分
	private Double serveScore;		// 服务评分
	private Long averageConsume;		// 平均消费
	private Long experienceClassPrice;		// 体验课价格
	private String businessField;		// 经营领域
	private String employeesNum;		// 员工人数
	private String companyProfile;		// 公司简介
	private String companyLocation;		// 公司地点
	private String recruitmentMobile;		// 招聘联系电话
	
	private NatatoriumInfoToUser natatoriumInfoToUser;		// 用户游泳馆信息关联
	
	//################## 附加字段 #######################
	private String customerWechatImageUrl;		// 客服微信二维码图片url
	private List<String> natatoriumInfoImageUrlList = new ArrayList<String>();	//游泳馆图片url集合
	private List<String> movementImageUrlList = new ArrayList<String>();	//运动实拍图片url集合
	private List<String> otherImageUrlList = new ArrayList<String>();	//其它图片url集合
	private List<String> natatoriumInfoMediaUrlList = new ArrayList<String>();	//环境视频url集合
	
	
	public NatatoriumInfo() {
		this(null);
	}

	public NatatoriumInfo(String id){
		super(id);
	}
	
	public NatatoriumInfoToUser getNatatoriumInfoToUser() {
		return natatoriumInfoToUser;
	}

	public void setNatatoriumInfoToUser(NatatoriumInfoToUser natatoriumInfoToUser) {
		this.natatoriumInfoToUser = natatoriumInfoToUser;
	}

	public Long getPlacingFunctionStatus() {
		return placingFunctionStatus;
	}

	public void setPlacingFunctionStatus(Long placingFunctionStatus) {
		this.placingFunctionStatus = placingFunctionStatus;
	}

	public Long getCollaborateStatus() {
		return collaborateStatus;
	}

	public void setCollaborateStatus(Long collaborateStatus) {
		this.collaborateStatus = collaborateStatus;
	}

	public Long getBusinessStatus() {
		return businessStatus;
	}

	public void setBusinessStatus(Long businessStatus) {
		this.businessStatus = businessStatus;
	}

	public List<String> getNatatoriumInfoImageUrlList() {
		return natatoriumInfoImageUrlList;
	}

	public void setNatatoriumInfoImageUrlList(List<String> natatoriumInfoImageUrlList) {
		this.natatoriumInfoImageUrlList = natatoriumInfoImageUrlList;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getArea() {
		return area;
	}

	public void setArea(String area) {
		this.area = area;
	}

	public Long getRanking() {
		return ranking;
	}

	public void setRanking(Long ranking) {
		this.ranking = ranking;
	}

	@NotBlank(message="场馆名称不能为空")
	@Length(min=0, max=45, message="场馆名称长度不能超过 45 个字符")
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//	@NotNull(message="申请时间不能为空")
	public Date getApplyTime() {
		return applyTime;
	}

	public void setApplyTime(Date applyTime) {
		this.applyTime = applyTime;
	}
	
	@NotBlank(message="场馆地址不能为空")
	@Length(min=0, max=150, message="场馆地址长度不能超过 150 个字符")
	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
	
//	@NotBlank(message="负责人不能为空")
	@Length(min=0, max=10, message="负责人长度不能超过 10 个字符")
	public String getPrincipal() {
		return principal;
	}

	public void setPrincipal(String principal) {
		this.principal = principal;
	}
	
	@Length(min=0, max=500, message="场馆描述长度不能超过 500 个字符")
	public String getVenueDescription() {
		return venueDescription;
	}

	public void setVenueDescription(String venueDescription) {
		this.venueDescription = venueDescription;
	}
	
//	@NotBlank(message="联系电话不能为空")
	@Length(min=0, max=20, message="联系电话长度不能超过 20 个字符")
	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}
	
	@Length(min=0, max=50, message="营业时间长度不能超过 50 个字符")
	public String getBusinessHours() {
		return businessHours;
	}

	public void setBusinessHours(String businessHours) {
		this.businessHours = businessHours;
	}
	
	@Length(min=0, max=50, message="结算银行长度不能超过 50 个字符")
	public String getSettlementBank() {
		return settlementBank;
	}

	public void setSettlementBank(String settlementBank) {
		this.settlementBank = settlementBank;
	}
	
	@Length(min=0, max=50, message="开户人长度不能超过 50 个字符")
	public String getOpenAccountPerson() {
		return openAccountPerson;
	}

	public void setOpenAccountPerson(String openAccountPerson) {
		this.openAccountPerson = openAccountPerson;
	}
	
	@Length(min=0, max=50, message="开户电话长度不能超过 50 个字符")
	public String getOpenAccountPhone() {
		return openAccountPhone;
	}

	public void setOpenAccountPhone(String openAccountPhone) {
		this.openAccountPhone = openAccountPhone;
	}
	
	@Length(min=0, max=50, message="开户帐号长度不能超过 50 个字符")
	public String getOpenAccountNumber() {
		return openAccountNumber;
	}

	public void setOpenAccountNumber(String openAccountNumber) {
		this.openAccountNumber = openAccountNumber;
	}
	
	public Long getSettlementFirst() {
		return settlementFirst;
	}

	public void setSettlementFirst(Long settlementFirst) {
		this.settlementFirst = settlementFirst;
	}
	
	public Long getSettlementLast() {
		return settlementLast;
	}

	public void setSettlementLast(Long settlementLast) {
		this.settlementLast = settlementLast;
	}

	public List<String> getNatatoriumInfoMediaUrlList() {
		return natatoriumInfoMediaUrlList;
	}

	public void setNatatoriumInfoMediaUrlList(List<String> natatoriumInfoMediaUrlList) {
		this.natatoriumInfoMediaUrlList = natatoriumInfoMediaUrlList;
	}

	public Long getShowNavigationStatus() {
		return showNavigationStatus;
	}

	public void setShowNavigationStatus(Long showNavigationStatus) {
		this.showNavigationStatus = showNavigationStatus;
	}

	public Long getShowMapStatus() {
		return showMapStatus;
	}

	public void setShowMapStatus(Long showMapStatus) {
		this.showMapStatus = showMapStatus;
	}

	public Long getShowBookingStatus() {
		return showBookingStatus;
	}

	public void setShowBookingStatus(Long showBookingStatus) {
		this.showBookingStatus = showBookingStatus;
	}

	public Long getConceptionStatus() {
		return conceptionStatus;
	}

	public void setConceptionStatus(Long conceptionStatus) {
		this.conceptionStatus = conceptionStatus;
	}

	public Long getWorkShopStatus() {
		return workShopStatus;
	}

	public void setWorkShopStatus(Long workShopStatus) {
		this.workShopStatus = workShopStatus;
	}

	public String getIncreaseDailyVisits() {
		return increaseDailyVisits;
	}

	public void setIncreaseDailyVisits(String increaseDailyVisits) {
		this.increaseDailyVisits = increaseDailyVisits;
	}

	public Double getStartLevelScore() {
		return startLevelScore;
	}

	public void setStartLevelScore(Double startLevelScore) {
		this.startLevelScore = startLevelScore;
	}

	public Double getWaterScore() {
		return waterScore;
	}

	public void setWaterScore(Double waterScore) {
		this.waterScore = waterScore;
	}

	public Double getContextScore() {
		return contextScore;
	}

	public void setContextScore(Double contextScore) {
		this.contextScore = contextScore;
	}

	public Double getServeScore() {
		return serveScore;
	}

	public void setServeScore(Double serveScore) {
		this.serveScore = serveScore;
	}

	public Long getAverageConsume() {
		return averageConsume;
	}

	public void setAverageConsume(Long averageConsume) {
		this.averageConsume = averageConsume;
	}

	public String getCustomerWechatImageUrl() {
		return customerWechatImageUrl;
	}

	public void setCustomerWechatImageUrl(String customerWechatImageUrl) {
		this.customerWechatImageUrl = customerWechatImageUrl;
	}

	public List<String> getMovementImageUrlList() {
		return movementImageUrlList;
	}

	public void setMovementImageUrlList(List<String> movementImageUrlList) {
		this.movementImageUrlList = movementImageUrlList;
	}

	public List<String> getOtherImageUrlList() {
		return otherImageUrlList;
	}

	public void setOtherImageUrlList(List<String> otherImageUrlList) {
		this.otherImageUrlList = otherImageUrlList;
	}

	public Long getExperienceClassPrice() {
		return experienceClassPrice;
	}

	public void setExperienceClassPrice(Long experienceClassPrice) {
		this.experienceClassPrice = experienceClassPrice;
	}

	public String getNavigationAddress() {
		return navigationAddress;
	}

	public void setNavigationAddress(String navigationAddress) {
		this.navigationAddress = navigationAddress;
	}

	public String getBusinessField() {
		return businessField;
	}

	public void setBusinessField(String businessField) {
		this.businessField = businessField;
	}

	public String getEmployeesNum() {
		return employeesNum;
	}

	public void setEmployeesNum(String employeesNum) {
		this.employeesNum = employeesNum;
	}

	public String getCompanyProfile() {
		return companyProfile;
	}

	public void setCompanyProfile(String companyProfile) {
		this.companyProfile = companyProfile;
	}

	public String getCompanyLocation() {
		return companyLocation;
	}

	public void setCompanyLocation(String companyLocation) {
		this.companyLocation = companyLocation;
	}

	public String getRecruitmentMobile() {
		return recruitmentMobile;
	}

	public void setRecruitmentMobile(String recruitmentMobile) {
		this.recruitmentMobile = recruitmentMobile;
	}
	
}